package com.mybatis.basic.fileupload;

import java.io.File;
import java.util.Arrays;
import org.apache.log4j.Logger;
import org.springframework.web.multipart.MultipartFile;

public class FileUploadByLocal extends FileUploadBase{

	private static final Logger log = Logger.getLogger(FileUploadByLocal.class);

	/**
	 * 
	 * @param filePath 要上传的文件路径，不带文件名
	 * @param file 要上传的文件
	 * @return
	 */
	public String beginFileUpload(String filePath_,MultipartFile file){
		try {
			//上传的文件名
			String fileName_ = file.getOriginalFilename();
			//文件后缀，不包含 . 
			String suffix_ = fileName_.substring(fileName_.lastIndexOf(".")+1);
			//判断是否上传的不允许上传的文件类型
			if(Arrays.asList(getAllowFileType()).contains(suffix_)){
				return "不允许上传该文件类型";
			}
			long fileSize_ = file.getSize();
			if(fileSize_>getAllowSize()){
				return "上传的文件超出允许的最大值";
			}
			File destFile = new File(filePath_);
			//判断文件夹是否存在
			if(destFile.exists()){
				//不存在就创建文件夹
				destFile.mkdirs();
			}
			//文件名
			String newFileName = createFileName()+"."+suffix_;
			//上传路径
			String absolutePath = destFile.getAbsolutePath();
			//创建文件
			File createFile = new File(absolutePath+"//"+newFileName);
			file.transferTo(createFile);
			createFile.createNewFile();
			setFileName(newFileName);//fileName = newFileName;
			setSuffix(suffix_);//suffix = suffix_;
			setFileSize(fileSize_);//fileSize = fileSize_;
			setFilePath(absolutePath);//filePath = absolutePath;
			return "上传文件成功";
		} catch (Exception e) {
			e.printStackTrace();
			log.error("上传文件失败");
			return "上传文件失败";
		}
	}

}
